1. Field of the Invention
The present invention relates to parallelizing execution of single-threaded programs on a multiprocessor system.
2. Description of the Related Art
In multi-core computer systems, different system resources (such as CPUs, memory, I/O bandwidth, disk storage, etc.) are each used to operate on multiple instruction threads. Challenges associated with efficiently operating these multi-core computer systems only increase as the number and complexity of cores in a multiprocessor computer grows.
One issue relating to the use of multi-core integrated circuits is that it often is difficult to write software to take advantage of the multiple cores. To take advantage of the multi-core processors, tasks often need to be divided into threads, and the threads often need to be distributed onto available cores. One issue relating to dividing and distributing the threads is how to efficiently use the cores if there are not enough threads to keep all of the cores occupied. As the number and type of cores increase, there will be an opportunity to use spare cores in a more intelligent way.